const API = 'api/'
const webUrl = 'http://www.tati.cn/'
// const webUrl = 'http://192.168.0.230:8004/'
const HEADER_FORM_URL = {
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
}
const HEADER_JSON = {
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  }
}
const YES_NO = [{
  value: true,
  label: '是'
}, {
  value: false,
  label: '否'
}]

const NEW_OLD = [{
  value: true,
  label: '新'
}, {
  value: false,
  label: '旧'
}]

function isvalid (row, column) {
  let value = row[column.property]
  if (value === null) return ''
  if (value === 1 || value === true) {
    return '启用'
  } else {
    return '禁用'
  }
}

function isvalidAuditing (row, column) {
  let value = row[column.property]
  if (value === null) return ''
  if (value === 1 || value === true) {
    return '已认证'
  } else {
    return '未认证'
  }
}

function formatterYesNo (row, column) {
  let value = row[column.property]
  if (value === null) return ''
  if (value === 1 || value === true) {
    return '是'
  } else {
    return '否'
  }
}

function formatterNewOld (row, column) {
  let value = row[column.property]
  if (value === null) return ''
  if (value === 1 || value === true) {
    return '新'
  } else {
    return '旧'
  }
}

function formatterDate (row, column, cellValue) {
  let value = cellValue
  if (value !== '' && value !== undefined && value) {
    let date = new Date(value)
    return date.getFullYear() + '-' + pad(date.getMonth() + 1, 2) + '-' +
      pad(date.getDate(), 2)
  } else {
    return ''
  }
}

function formatDatePicker (value) {
  if (value != '' && value != undefined && value && value != null) {
    let date = new Date(value)
    return date.getFullYear() + '-' + pad((date.getMonth() + 1), 2) + '-'
      + pad(date.getDate(), 2)
  }
  else {
    return ''
  }
}

function formatMonthPicker (value) {
  if (value !== '' && value !== undefined && value) {
    let date = new Date(value)
    return date.getFullYear() + '-' + pad((date.getMonth() + 1), 2)
  } else {
    return ''
  }
}

function formatDatetimePicker (value) {
  if (value !== '' && value !== undefined && value) {
    let date = new Date(value)
    return date.getFullYear() + '-' + pad((date.getMonth() + 1), 2) + '-' +
      pad(date.getDate(), 2) + ' ' + pad(date.getHours(), 2) + ':' + pad(date.getMinutes(), 2) +
      ':' + pad(date.getSeconds(), 2)
  } else {
    return ''
  }
}

function pad (num, n) {
  let len = num.toString().length
  while (len < n) {
    num = '0' + num
    len++
  }
  return num
}

function formatterYearMonth (row, column, cellValue) {
  let value = cellValue
  if (value !== '' && value !== undefined && value) {
    let date = new Date(value)
    return date.getFullYear() + '-' + pad(date.getMonth() + 1, 2)
  } else {
    return ''
  }
}

function formatYearMonthPicker (value) {
  if (value !== '' && value !== undefined && value) {
    let date = new Date(value)
    return date.getFullYear() + '-' + pad((date.getMonth() + 1), 2)
  } else {
    return ''
  }
}

function formatterPhone (row, column) {
  let value = row[column.property]
  if (value == null || value === '') {
    return ''
  }
  return value.substring(0, 3) + '****' + value.substring(7, value.length)
}
function isPhone (val) {
  // eslint-disable-next-line
  let reg = /(^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$)|(^0{0,1}1[3|4|5|6|7|8|9][0-9]{9}$)/
  return reg.test(val)
}
function isEmail(val) {
  var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/
  return reg.test(val);
}
function isId(ID) {
  if (typeof ID !== 'string') return false;
  var city = {
    11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江 ", 31: "上海", 32: "江苏",
    33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南",
    50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾",
    81: "香港", 82: "澳门", 91: "国外"
  };

  var birthday = ID.substr(6, 4) + '/' + Number(ID.substr(10, 2)) + '/' + Number(ID.substr(12, 2));
  var d = new Date(birthday);
  var newBirthday = d.getFullYear() + '/' + Number(d.getMonth() + 1) + '/' + Number(d.getDate());
  var currentTime = new Date().getTime();
  var time = d.getTime();
  var arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
  var arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
  var sum = 0, i, residue;

  if (!/^\d{17}(\d|x)$/i.test(ID)) return false;
  if (city[ID.substr(0, 2)] === undefined) return false;
  if (time >= currentTime || birthday !== newBirthday) return false;
  for (i = 0; i < 17; i++) {
    sum += ID.substr(i, 1) * arrInt[i];
  }
  residue = arrCh[sum % 11];

  return residue === ID.substr(17, 1);
}

export default {
  webUrl,
  API,
  HEADER_FORM_URL,
  HEADER_JSON,
  YES_NO,
  NEW_OLD,
  pad,
  isvalid,
  isvalidAuditing,
  formatterYesNo,
  formatterDate,
  formatDatePicker,
  formatMonthPicker,
  formatDatetimePicker,
  formatterYearMonth,
  formatYearMonthPicker,
  formatterNewOld,
  formatterPhone,
  isPhone,
  isEmail,
  isId
}
